#pragma once
#include <signal.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <iostream>
#include <string>
#include <sys/stat.h>
#include <fcntl.h>
#include "common.hpp"
std::string path = "/dev/null";
void Daemon(int nochdir, int noclose)
{
    // 忽略信号
    signal(SIGCHLD, SIG_IGN);
    signal(SIGPIPE, SIG_IGN);
    // 创建子进程，并且结束父进程
    if (fork() > 0)
    {
        // 父进程结束
        exit(0);
    }
    // 子进程
    pid_t sid = setsid(); // 创建新会话
    if (nochdir == 0)
    {
        // 更改工作路径为根目录
        chdir("/");
    }
    int n = open(path.c_str(), O_RDWR);
    if (noclose == 0)
    {
        dup2(n, 0);
        dup2(n, 1);
        dup2(n, 2);
    }
}